﻿using System;
using System.Collections.Generic;
using System.Text;

namespace ServerLib.Plugin
{
    
    public class Plugin
    {
        #region Private Properties

        private string name = string.Empty;
        private PluginType type = PluginType.Connection;
        private List<PluginService> services = new List<PluginService>();
        private string library = string.Empty;
        private string pInterface = string.Empty;
        private string fullName = string.Empty;
        private List<PluginAttribute> attributes = new List<PluginAttribute>();
        
        #endregion

        #region Public Properties
        /// <summary>
        ///  Gets and Sets the name of the plugin library
        /// </summary>
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value;
            }
        }
        
        /// <summary>
        ///  Gets and Sets the Type of the plugin library
        /// </summary>
        public PluginType Type
        {
            get
            {
                return type;
            }
            set
            {
                type = value;
            }
        }

        /// <summary>
        ///  Gets a list of the Services this plugin library is used for
        /// </summary>
        public List<PluginService> Services
        {
            get
            {
                return services;
            }
        }

        /// <summary>
        ///  Gets and Sets the Library Path
        /// </summary>
        public string Library
        {
            get
            {
                return library;
            }
            set
            {
                library = value;
            }
        }

        /// <summary>
        ///  Gets and Sets the Library Interface Name
        /// </summary>
        public string Interface
        {
            get
            {
                return pInterface;
            }
            set
            {
                pInterface = value;
            }
        }

        /// <summary>
        ///  Gets and Sets the Library Full Description
        /// </summary>
        public string FullName
        {
            get
            {
                return fullName;
            }

            set
            {
                fullName = value;
            }
        }

        /// <summary>
        ///  Gets a list of this library's additional attributes
        /// </summary>
        public List<PluginAttribute> Attributes
        {
            get
            {
                return attributes;
            }
        }

        #endregion
    }
}
